t = int(input())
for _ in range(t):
s = input()
n, m = map(int, input().split())
a = []
for i in range(m):
x, w = map(int, input().split())
a.append([w, x, i+1])
a.sort()
a = a[:2*n]
a.sort(key=lambda x: x[1])
sm = 0
for i in range(len(a)):
sm += a[i][0]
print(sm)
for i in range(len(a) // 2):
print(a[i][2], a[-i-1][2])
print()
#include <bits/stdc++.h>
using namespace std;
#define ll int
int main(){
ll t;
cin>>t;
for(ll alpha=0;alpha<t;alpha++){
ll n,m;
cin>>n>>m;
vector<ll> x(m);
vector<ll> w(m);
vector<pair<ll,ll>> v;
vector<pair<ll,ll>> v1;
map<pair<ll,ll>,int> ma;
for(ll i=0;i<m;i++){
cin>>x[i]>>w[i];
v.push_back({w[i],x[i]});
ma[{x[i],w[i]}]=i+1;
}
sort(v.begin(),v.end());
ll ans=0;
for(ll i=0;i<2*n;i++){
ans+=v[i].first;
v1.push_back({v[i].second,v[i].first});
}
sort(v1.begin(),v1.end());
cout<<ans<<endl;
for(ll i=0;i<n;i++){
cout<<ma[v1[i]]<<" "<<ma[v1[2*n-1-i]]<<endl;
}
}
return 0;
}
415. Add Strings | 22. Generate Parentheses |
13. Roman to Integer | 2. Add Two Numbers |
515. Find Largest Value in Each Tree Row | 345. Reverse Vowels of a String |
628. Maximum Product of Three Numbers | 1526A - Mean Inequality |
1526B - I Hate 1111 | 1881. Maximum Value after Insertion |
237. Delete Node in a Linked List | 27. Remove Element |
39. Combination Sum | 378. Kth Smallest Element in a Sorted Matrix |
162. Find Peak Element | 1529A - Eshag Loves Big Arrays |
19. Remove Nth Node From End of List | 925. Long Pressed Name |
1051. Height Checker | 695. Max Area of Island |
402. Remove K Digits | 97. Interleaving String |
543. Diameter of Binary Tree | 124. Binary Tree Maximum Path Sum |
1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts | 501A - Contest |
160A- Twins | 752. Open the Lock |
1535A - Fair Playoff | 1538F - Interesting Function |